package com.ruoyi.system.domain;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 歌曲信息对象 sys_song
 *
 * @author Johnson
 * @date 2025-04-30
 */
public class SysSong extends BaseEntity {

    /** 歌曲ID */
    private Long songId;

    /** 歌曲名称 */
    @Excel(name = "歌曲名称")
    private String songName;

    /** 歌手ID */
    @Excel(name = "歌手ID")
    private Long artistId;

    /** 歌手名称(冗余存储) */
    @Excel(name = "歌手名称(冗余存储)")
    private String artistName;

    /** 专辑ID */
    @Excel(name = "专辑ID")
    private Long albumId;

    /** 专辑名称(冗余存储) */
    @Excel(name = "专辑名称(冗余存储)")
    private String albumName;

    /** 时长(秒) */
    @Excel(name = "时长(秒)")
    private Long duration;

    /** 流派名称(冗余存储) */
    @Excel(name = "流派名称(冗余存储)")
    private String genreName;

    /** 封面URL */
    @Excel(name = "封面URL")
    private String coverUrl;

    /** 文件URL */
    @Excel(name = "文件URL")
    private String fileUrl;

    /** 文件大小(字节) */
    @Excel(name = "文件大小(字节)")
    private Long fileSize;

    /** 文件格式(mp3/flac等) */
    @Excel(name = "文件格式(mp3/flac等)")
    private String fileFormat;

    /** 歌词类型(0:无歌词 1:内嵌歌词 2:外链歌词) */
    @Excel(name = "歌词类型(0:无歌词 1:内嵌歌词 2:外链歌词)")
    private String lyricsType;

    /** 歌词内容(LRC格式) */
    @Excel(name = "歌词内容(LRC格式)")
    private String lyricsText;

    /** 歌词文件URL */
    @Excel(name = "歌词文件URL")
    private String lyricsUrl;

    /** 播放次数 */
    @Excel(name = "播放次数")
    private Long playCount;

    /** 下载次数 */
    @Excel(name = "下载次数")
    private Long downloadCount;

    /** 发行时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "发行时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date releaseDate;

    /** 版权状态(0:无版权 1:独家 2:非独家) */
    @Excel(name = "版权状态(0:无版权 1:独家 2:非独家)")
    private String copyrightStatus;

    /** 状态(0:正常 1:下架 2:审核中) */
    @Excel(name = "状态(0:正常 1:下架 2:审核中)")
    private String status;

    /** 删除标志(0:存在 1:删除) */
    private String delFlag;

    public void setSongId(Long songId)
    {
        this.songId = songId;
    }

    public Long getSongId()
    {
        return songId;
    }
    public void setSongName(String songName)
    {
        this.songName = songName;
    }

    public String getSongName()
    {
        return songName;
    }
    public void setArtistId(Long artistId)
    {
        this.artistId = artistId;
    }

    public Long getArtistId()
    {
        return artistId;
    }
    public void setArtistName(String artistName)
    {
        this.artistName = artistName;
    }

    public String getArtistName()
    {
        return artistName;
    }
    public void setAlbumId(Long albumId)
    {
        this.albumId = albumId;
    }

    public Long getAlbumId()
    {
        return albumId;
    }
    public void setAlbumName(String albumName)
    {
        this.albumName = albumName;
    }

    public String getAlbumName()
    {
        return albumName;
    }
    public void setDuration(Long duration)
    {
        this.duration = duration;
    }

    public Long getDuration()
    {
        return duration;
    }
    public void setGenreName(String genreName)
    {
        this.genreName = genreName;
    }

    public String getGenreName()
    {
        return genreName;
    }
    public void setCoverUrl(String coverUrl)
    {
        this.coverUrl = coverUrl;
    }

    public String getCoverUrl()
    {
        return coverUrl;
    }
    public void setFileUrl(String fileUrl)
    {
        this.fileUrl = fileUrl;
    }

    public String getFileUrl()
    {
        return fileUrl;
    }
    public void setFileSize(Long fileSize)
    {
        this.fileSize = fileSize;
    }

    public Long getFileSize()
    {
        return fileSize;
    }
    public void setFileFormat(String fileFormat)
    {
        this.fileFormat = fileFormat;
    }

    public String getFileFormat()
    {
        return fileFormat;
    }
    public void setLyricsType(String lyricsType)
    {
        this.lyricsType = lyricsType;
    }

    public String getLyricsType()
    {
        return lyricsType;
    }
    public void setLyricsText(String lyricsText)
    {
        this.lyricsText = lyricsText;
    }

    public String getLyricsText()
    {
        return lyricsText;
    }
    public void setLyricsUrl(String lyricsUrl)
    {
        this.lyricsUrl = lyricsUrl;
    }

    public String getLyricsUrl()
    {
        return lyricsUrl;
    }
    public void setPlayCount(Long playCount)
    {
        this.playCount = playCount;
    }

    public Long getPlayCount()
    {
        return playCount;
    }
    public void setDownloadCount(Long downloadCount)
    {
        this.downloadCount = downloadCount;
    }

    public Long getDownloadCount()
    {
        return downloadCount;
    }
    public void setReleaseDate(Date releaseDate)
    {
        this.releaseDate = releaseDate;
    }

    public Date getReleaseDate()
    {
        return releaseDate;
    }
    public void setCopyrightStatus(String copyrightStatus)
    {
        this.copyrightStatus = copyrightStatus;
    }

    public String getCopyrightStatus()
    {
        return copyrightStatus;
    }
    public void setStatus(String status)
    {
        this.status = status;
    }

    public String getStatus()
    {
        return status;
    }
    public void setDelFlag(String delFlag)
    {
        this.delFlag = delFlag;
    }

    public String getDelFlag()
    {
        return delFlag;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("songId", getSongId())
            .append("songName", getSongName())
            .append("artistId", getArtistId())
            .append("artistName", getArtistName())
            .append("albumId", getAlbumId())
            .append("albumName", getAlbumName())
            .append("duration", getDuration())
            .append("genreName", getGenreName())
            .append("coverUrl", getCoverUrl())
            .append("fileUrl", getFileUrl())
            .append("fileSize", getFileSize())
            .append("fileFormat", getFileFormat())
            .append("lyricsType", getLyricsType())
            .append("lyricsText", getLyricsText())
            .append("lyricsUrl", getLyricsUrl())
            .append("playCount", getPlayCount())
            .append("downloadCount", getDownloadCount())
            .append("releaseDate", getReleaseDate())
            .append("copyrightStatus", getCopyrightStatus())
            .append("status", getStatus())
            .append("delFlag", getDelFlag())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .toString();
    }
}
